package Analizadores.Estructuras;

import java.util.ArrayList;

import Analizadores.AnalizadorSintactico.Tipos;

//Pila para poder llevar los tipos usados y verificar el tipado de las expresiones
public class PilaTipos {
	private ArrayList<Tipos> pila;
	private int indice;
	
	//constructora
	public PilaTipos(){
		pila = new ArrayList<Tipos>();
		indice = 0;
	}
	//apila un tipo, incrementado el indice para saber cual es el ultimo elemento
	public void apila(Tipos t){
		pila.add(t);
		indice++;
	}
	//metodo para desapilar y devolver el ultimo elemento, despues es borrado de la pila
	public Tipos desapila(){
		indice--;
		Tipos tip= pila.get(indice);
		pila.remove(indice);
		return tip;
	}
	//metodo para mostrar como string la pila
	public String toString(){
		return pila.toString();
	}
	//metodo para vaciar la pila
	public void vaciaPila(){
		pila.removeAll(pila);
		indice = 0;
	}
}
